#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5+37;
int mod = 998244353;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n; cin >> n;
vector<int> a(n);
vector<int> b((int)1e5+37, 0);
for(auto &i: a) cin >> i;
for(int i=0; i<n; i++){
int ma = a[i];
for(int l=i; l<n; l+=(i+1)){
ma=max(ma, a[l]);
}
b[ma]++;
}
vector<int> p(n+5);
p[0]=1;
for(int i=1; i<n+5; i++){
p[i] = p[i-1]*2;
p[i] %= mod;
}
int el=1, ans = 0;
for(int i=0; i<1e5+37; i++){
if(i!=0)
b[i]+=b[i-1];
b[i]%=mod;
int val = p[b[i]]-((i==0)?0:p[b[i-1]]);
val %= mod; val+= mod; val%=mod;
ans+=(val*i)%mod;
ans %= mod;
// cout << val << "\n";
}
cout << ans;
}
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |
1244C - The Football Season | 1696B - NIT Destroys the Universe |
1674A - Number Transformation | 1244E - Minimizing Difference |
1688A - Cirno's Perfect Bitmasks Classroom | 219A - k-String |
952A - Quirky Quantifiers | 451B - Sort the Array |
1505H - L BREAK into program | 171E - MYSTERIOUS LANGUAGE |
630D - Hexagons | 1690D - Black and White Stripe |
1688D - The Enchanted Forest | 1674C - Infinite Replacement |
712A - Memory and Crow | 1676C - Most Similar Words |
1681A - Game with Cards | 151C - Win or Freeze |
1585A - Life of a Flower | 1662A - Organizing SWERC |
466C - Number of Ways | 1146A - Love "A" |
1618D - Array and Operations | 1255A - Changing Volume |